/**
 * Created by BigBi on 2017/4/13.
 */
//util 是一个Node.js 核心模块，提供常用函数的集合，用于弥补核心JavaScript 的功能 过于精简的不足。
//util.inherits
//util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。
//JavaScript 的面向对象特性是基于原型的，与常见的基于类的不同。JavaScript 没有 提供对象继承的语言级别特性，而是通过原型复制来实现的。

var util = require('util');

function BaseObj(){
    this.name = 'wangcheng';
    this.base = 2007;
    this.sayHi = function(){
        console.log('Hello ',this.name);
    }
}
//原型中定义的函数
BaseObj.prototype.getName = function(){
    console.log('getName:',this.name);
}
BaseObj.prototype.getYear = function(){
    console.log('getYear:',this.base);
}

function SubObj(){
    this.name='subobj';
}

util.inherits(SubObj,BaseObj);//SubObj 继承 BaseObj

var objBase = new BaseObj();
objBase.sayHi();
objBase.getName();
objBase.getYear();
console.log(objBase);

console.log("/**************************************************/")

var objSub = new SubObj();
//objSub.sayHi(); 没有继承BaseObj在构造函数中的属性[sayHi()],因此会报错提示方法不存在
objSub.getName();//继承了BaseObj在原型中定义的函数，因此输出 name
objSub.getYear();
console.log(objSub);

console.log("/**************************************************/")
// util.isArray(object) 用于判断某对象是否是数组
console.log(util.isArray([]))
// true
console.log(util.isArray(new Array))
// true
console.log(util.isArray({}))
// false

console.log("/**************************************************/")
// util.isDate(obj) 判断是否是日期
console.log(util.isDate(new Date()));
console.log(util.isDate('2017-04-13'));
